/*
  学习目标：给泛型函数-指定更加详细的参数类型
  🔔🔔 泛型类似自定义类型, 可以和其它类型任意组合
*/

// 需求1: 接收一个数组，返回值类型是：元素的类型
function getFirst<T>(list: T[]): T {
  return list[0];
}

const result2 = getFirst(['1', '2']); // 要求result2的类型是string

const result1 = getFirst([1, 2]); // 要求result1的类型是number
result1.toFixed(2);

/* 🐛🐛🐛🐛🐛🐛🐛🐛====华丽de分割线==🐛🐛🐛🐛🐛🐛🐛🐛 */

// 需求2： 传入对象，具有name键，捕获name值的类型作为返回值类型
function findNameFn<T>(obj: { name: T }): T {
  return obj.name;
}
const result3 = findNameFn({ name: '123' }); //返回值类型string
const result4 = findNameFn({ name: 123 }); //返回值类型number
